from datetime import timedelta
import logging
from redis import Redis


# 地址已经在使用中
# 定义配置类来封装配置信息
class Config:
    DEBUG = True  # 设置调试模式
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/data_02"  # 链接数据库
    SQLALCHEMY_TRACK_MODIFICATIONS = False  # 是否追踪数据库变化
    REDIS_HOST = "127.0.0.1"  # redis的链接地址，将自定义的配置也封装到Config类中
    REDIS_PORT = 6379
    SESSION_TYPE = "redis"  # 设置session储存的方式，redis方便设置过期时间
    SESSION_REDIS = Redis(host=REDIS_HOST, port=REDIS_PORT)  # 设置Redis链接对象
    SESSION_USE_SIGNER = True  # 设置sessionid进行加密
    SECRET_KEY = "test"  # 设置sessionid秘钥
    PERMANENT_SESSION_LIFETIME = timedelta(days=7)  # s设置session过期时间，组件模式支持设置过期时间
    # 设置数据库自动提交（在请求结束后，会自动提交）    #源代码有误，没有做异常处理和回滚。以改
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True


class DevelopmentConfig(Config):  # 开发环境配置
    DEBUG = True  # 调试模式
    LOGLEVEL = logging.DEBUG  # 日志等级
    WTF_CSRF_ENABLED = False  # 关闭CSRF校验


class ProductionConfig(Config):  # 生产模式配置
    DEBUG = False
    LOGLEVEL = logging.ERROR  # 日志等级
    WTF_CSRF_ENABLED = True  # 打开CSRF校验


# 让配置字典来记录配置类型和配置类的对应关系
config_dict = {
    "dev": DevelopmentConfig,
    "pro": ProductionConfig
}
